﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Model.Miembro;

namespace Processes.Miembro
{
    public class Class2
    {
       public static List<ClaseMiembro> miembros;
        public static void constructor()
        {
            //llenar miembros de la base de datos


            miembros = new List<ClaseMiembro>();
            miembros = DataBase.Miembro.BDMiembro.getMiembrosTotal();
            //ClaseMiembro asdf = new ClaseMiembro();
            //asdf.nombre = "uno";
            //asdf.apePa = "poiu";
            //asdf.ci = 1234;
            
            //Class1 asdfa = new Class1();
            //asdfa.nombre = "dos";
            //asdfa.apePa = "iuhj";
            //asdfa.ci = 2345;
            
            //Class1 asdfs = new Class1();
            //asdfs.nombre = "tres";
            //asdfs.apePa = "poiu";
            //asdfs.ci = 3456;

            //Class1 asdfd = new Class1();
            //asdfd.nombre = "cuatro";
            //asdfd.apePa = "poiu";
            //asdfd.ci = 356786;

            //Class1 asdff = new Class1();
            //asdff.nombre = "cinco";
            //asdff.apePa = "poiu";
            //asdff.ci = 1090;

            //Class1 asdffh = new Class1();
            //asdffh.nombre = "unkjkjoss";
            //asdffh.apePa = "poiu";
            //asdffh.ci = 12876;

            //miembros.Add(asdf);
            //miembros.Add(asdfa);
            //miembros.Add(asdfs);
            //miembros.Add(asdfd);
            //miembros.Add(asdff);
            //miembros.Add(asdffh);
        }
        public static ClaseMiembro buscarPorApePaterno(string ape)
        {
            for (int i = 0; i < miembros.Count; i++)
            {
                if ((miembros[i].apePaterno + "" + miembros[i].apeMaterno + "" + miembros[i].nombre)==ape)
                {
                    return miembros[i];
                }
            }
            return null;
        }
        public static List<ClaseMiembro> encontrados(string buscar, int indice)
        {
            List<ClaseMiembro> result = null;
            if (indice == 1) //indice uno para el carnet
            {
                result = new List<ClaseMiembro>();
                for (int i = 0; i < miembros.Count; i++)
                {
                    if ( seEncuentroDentroEnteros( Convert.ToInt32( buscar) ,miembros[i].carnet)==true)
                    {
                        result.Add(miembros[i]);
                    }
                }
            }
            if (indice == 2)
            {
                result = new List<ClaseMiembro>();
                for (int i = 0; i < miembros.Count; i++)
                {
                    if ( seEncuentroDentroString( buscar,miembros[i].apePaterno)==true)
                    {
                        result.Add(miembros[i]);
                    }
                }
            }
            return result;
        }
        
        public static bool seEncuentroDentroString(string esto,string estaDentro)
        {
            for (int i = 0; i < esto.Length; i++)
            {
                if (esto[i] != estaDentro[i])
                {
                    return false;
                }
            }
            return true;
        }

        static bool seEncuentroDentroEnteros(int esto, Int64 estaDento)
        {
            int aux = esto;
            int cantidad = 0;
            while (aux >0)
            {
                cantidad = cantidad + 1;
                aux = aux / 10;
            }
            int aotse = invertir(esto);
            int adentroesta = (invertir((int)estaDento));

            for (int i = 0; i < cantidad; i++)
            {
                if ( (aotse%10) != (adentroesta%10))
                {
                    return false;
                }
                aotse = aotse / 10;
                adentroesta = adentroesta / 10;
            }
            return true;
        }
        static int invertir(int poi)
        {
            int ress=0;
            int aux = poi;
            while (aux>9)
            {
                ress = (ress*10) + (aux%10);
                aux = (aux / 10);
            }
            ress = (ress * 10) + aux;
            return ress;
        }

    }
}